import 'dart:io';

void main() {
  print('111111');
  // test();
  test2();
  print('222222');
}

// 回调地狱
// test() {
//   login().then((token) {
//     setToken(token).then((res) {
//       if (res) {
//         print('登录并保存token成功');
//       } else {
//         print('保存token失败');
//       }
//     }).catchError((error) {
//       print(error);
//     });
//   }).catchError((error) {
//     print(error);
//   });
// }

// async + await 语法糖，可以简化回调地狱
test2() async {
  try {
    String token = await login();
    bool res = await setToken(token);
    if (res) {
      print('登录并保存token成功');
    } else {
      print('保存token失败');
    }
  } catch (error) {
    print(error);
  }
}

// 登录请求
Future<String> login() {
  return Future<String>(() {
    print('正在登录中...');
    sleep(Duration(seconds: 3));
    return '123token1234';
    // throw new Exception('网络失败');
  });
}

// 设置token
Future<bool> setToken(String token) {
  return Future<bool>(() {
    print('正在设置token...');
    sleep(Duration(seconds: 2));
    print('$token保存成功');
    return true;
  });
}
